package com.demo.java.OD551_600.OD562;

import java.util.Scanner;
import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【TLV解析II(B卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146540548
 */
public class OdMain {
    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        String tlv = in.nextLine(); // 读取TLV字符串
        int n = Integer.parseInt(in.nextLine()); // 读取tags数组的长度
        int[] tags = new int[n]; // 存储tag的数组
        for (int i = 0; i < n; i++) {
            tags[i] = in.nextInt(); // 读取每个tag
        }
        // 输出匹配的结果
        System.out.println(Arrays.deepToString(getTag(tlv, tags)));
    }

    // 解析TLV格式的字符串，获取每个tag的length和value
    public static int[][] getTag(String ltv, int[] tags) {
        // 如果TLV字符串为空，返回null
        if (ltv == null || ltv.length() == 0) {
            return null;
        }
        int n = tags.length;
        int[][] ans = new int[n][2]; // 存储每个tag的length和value
        int preIndex = 0; // 记录处理的位置
        // 遍历TLV字符串
        for (int i = 0; i < ltv.length(); i += preIndex) {
            // 解析tag（前两位）
            int tag = Integer.parseInt(ltv.substring(i, i + 2), 16);
            // 解析length（接下来的两位）
            int len = Integer.parseInt(ltv.substring(i + 2, i + 4), 16);
            // 遍历tags数组，找到匹配的tag
            for (int j = 0; j < tags.length; j++) {
                if (tag == tags[j]) {
                    ans[j][0] = len; // 保存length
                    ans[j][1] = preIndex / 2 + 2; // 保存value
                }
            }
            // 更新preIndex，准备处理下一个tag
            preIndex += 2 * len + 4;
        }
        return ans; // 返回结果
    }
}